package exception;
/**
 * throw关键字，用于将一个异常抛出
 * 通常下列情况下会主动将一个异常抛出到方法外:
 * 1.当前代码片段出现了异常，但是该异常不应该在此处被处理(责任问题)
 * 2.程序可以运行，但运行结果不符合实际业务需求(本案例演示的)
 * 例如我妈叫我去买酱油 但商店酱油没有了，不是我的问题
 */
public class ThrowDemo {
    public static void main(String[] args) {
        Person p = new Person();
        //p.setAge(1000);
        try {
            /*
            当我们调用一个含有throws声明异常抛出的方法时，编译器要求必须处理该异常，方法如下：
            1.使用try...catch捕获并处理该异常
            2.在当前方法中继续使用throws声明对该异常的输出
            注意：具体选择哪种方式，取决于责任问题
            记住：永远不要在main方法中写throws
             */
            //因为RuntimeException 不会提示 调用者根本不知道
            p.setAge(1000);
        } catch (IllegalAgeException e) {
            e.printStackTrace();//向控制台输出异常的堆栈跟踪信息
            System.out.println(e.getMessage());//输出错误消息
        }
//        catch (Exception e) {
//            e.printStackTrace();//向控制台输出异常的堆栈跟踪信息
//           System.out.println(e.getMessage());//输出错误消息 年龄必须在0-100之间
//        }

        System.out.println("此人年龄:" + p.getAge());//0
    }

}
